(function(factory){
    if(typeof define==="function" && define.amd){
        define([],factory);
    }else{
        factory();
    }
}(function(){
    var HKEY_Root="HKEY_CURRENT_USER",
        HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\",
        HKEY_Key,
        head,
        foot,
        top,
        bottom,
        left,
        right;
    var pagePrint={};
    //取得页面打印设置的原参数数据
    function pageSetup_temp(){
        try{
            var Wsh=new ActiveXObject("WScript.Shell");
            HKEY_Key="header";
            //取得页眉默认值
            head=Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
            HKEY_Key="footer";
            //取得页脚默认值
            foot=Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
            HKEY_Key="margin_bottom";
            //取得下页边距
            bottom=Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
            HKEY_Key="margin_left";
            //取得左页边距
            left=Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
            HKEY_Key="margin_left";
            //取得做页边距
            left=Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
            HKEY_Key="margin_right";
            //取得右页面边距
            right=Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
            HKEY_Key="margin_top";
            //取得上页边距
            top=Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
        }catch (e){
            throw new Error("不允许 ActiveX 控件")
        }
    }
    //设置网页打印的页眉页脚和页面边距为空
    function pageSetup_Null(){
        try{
            var Wsh=new ActiveXObject("WScript.Shell");
            HKEY_Key="header";
            //设置页眉（为空）
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
            HKEY_Key="footer";
            //设置页脚为空
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
            HKEY_Key="margin_bottom";
            //设置下页边距（0）
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0");
            HKEY_Key="margin_left";
            //设置左页面边距（0）
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0");
            HKEY_Key="margin_right";
            //设置右页边距（0）
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0");
            HKEY_Key="margin_top";
            //设置上页边距(0)
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0");
        }catch (e){
            throw new Error("不允许运行ActiveX")
        }
    }
    //设置网页打印的页眉页脚和页边距为默认值
    function pageSetup_Default(){
        try{
            var Wsh=new ActiveXObject("Wscript.Shell");
            HKEY_Key="header";
            //还原页眉
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,head);
            HKEY_Key="footer";
            //还原页脚
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,foot);
            HKEY_Key="margin_bottom";
            //还原下页边距
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,bottom);
            HKEY_Key="margin_left";
            //还原左页边距
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,left);
            HKEY_Key="margin_right";
            //还原右页边距
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,right);
            HKEY_Key="margin_top";
            //还原上页边距
            Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,top)
        }catch (e){
            throw new Error("不允许ActiveX控件")
        }
    }
    //设置纸张方向-模板，去除页眉页脚 设置页边距
    function setHengBan(){
        var wsShell=new ActiveXObject("WScript.Shell");
        wsShell.sendKeys("%fu");
        wsShell.sendKeys("%a");
        wsShell.sendKeys("{ENTER}")
    }

    pagePrint={
        startPrint:function(){
            if(typeof(head)=="undefined"){
                pageSetup_temp();
            }
            pageSetup_Null();
            document.execCommand("print",false ,null);
            setTimeout(function(){
                pageSetup_Default();
            },500);
        },
        reset:function(){
            if(typeof(head)=="undefined"){
                pageSetup_temp()
            }
            pageSetup_Null();
            setTimeout(function(){
                pageSetup_Default()
            },500);
        },
        startPreview:function(){
            pageSetup_Null();
            document.getElementById("printFactory").execwb(7,1);
        }
    };

    window.pagePrint=pagePrint;

    return pagePrint;
}));